草庐IT

c++ - python sys.stdout 和 C++ iostreams::cout

全部标签

c++ - printf 与 cout 性能

voidperfprint(unsignedintcount){chara[100]="fosjkdfjlsjdflw0304802";for(unsignedinti=0;i环境:C++、VS2010、Windows7、32位、Core-i7、4GB、3.40GHz我用count=10000测试了这两个函数,每个函数5次。使用QueryPerformanceCounter测量性能。perfprint>~850毫秒(5次运行的平均值)perfcout>~9000毫秒(5次运行的平均值)这是否意味着printf比cout快~10倍?编辑:使用/Ox、/Ot,发布版本中没有调试信息并在pe

windows - 有没有办法在 Windows 中的脚本运行期间将 stderr 重定向到 stdout?

作为一名长期的UNIXshell脚本编写者/发布工程师,在我最近的工作中全职进入Windows环境,有些事情我不可避免地会错过。其中一个是我信赖的老“exec2>&1”,它在Bourneshell中在脚本运行期间将stderr和stdout永久地结合在一起,以便日志记录将捕获所有好的和坏的东西。我知道您可以将2>foo.log附加到每个命令行调用的末尾,但我想知道是否有更好的方法。在Windows环境中是否有任何等效项?我们在这里同时使用.BAT文件脚本和Perl脚本(主要用于构建自动化,但也用于其他一些事情),我非常想知道这是否可行。 最佳答案

windows - 如何在启动时重定向 stderr *而不*重定向 stdin 和 stdout?

在Windows中,我想使用CreatePipe和CreateProcess来启动一个进程,并捕获写入到stderr的文本。MSDN上有示例代码:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499(v=vs.85).aspx我的问题是我想重定向和捕获STDERR,但不理会STDIN和STDOUT。让它们仍然绑定(bind)到子进程的控制台窗口。(如果子进程是控制台进程而不是窗口进程。)如果我按照示例代码,将STARTUPINFO.hStdError设置为我的管道句柄,并将STARTUPINFO.hStdOut

windows - 谁能解释为什么 cout 之后的语句会改变输出?

最奇怪的事情正在发生。在下面的程序中,我正在打印一行。按原样,程序输出以下内容:-----FOCUS-----:0x22fc80:但是,如果我在cout之后注释掉7个语句中的任何一个,我会得到以下结果:-----FOCUS-----:0:我包含了tchar.h、windows.h、iostream和Psapi.h。我正在使用MinGW-64,编译命令是:"C:\MinGW64\bin\g++.exe"-oMyProgram.exeMyProgram.cpp-lpsapi程序是:intmain(){HWNDfocusThreadWnd=GetForegroundWindow();DWOR

c++ - boost iostreams 断言失败

我需要能够使用单个fstream以具有平台无关的文件使用方式。特别是,我需要能够在Windows上支持带有unicode字符的文件路径,同时尽可能减少对代码的侵入以支持它。因此,boostiostreams似乎可以提供答案。然而,在尝试使用它时,我遇到了两个让我担心的失败。请参阅以下示例代码://MinGW(MSYS)//GCC4.7.2//Boost1.50.0//g++-gifstreamtest.cpp-otest.exe-I/t/tools/boost/boost_1_50_0-L/t/tools/boost/boost_1_50_0/stage/lib-lboost_syst

c - 使用 _pipe 非 block 重定向 STDOUT

正如标题所说,我正在尝试重定向stdout,以测试我有以下程序:#include#include#include#include#defineBUFFER_SIZE4096intmain(intargc,char*argv[]){intfdStdOutPipe[2];intfdStdOut;printf("ConsolePrint...\n");//Startfflush(stdout);_pipe(fdStdOutPipe,BUFFER_SIZE,O_RAW);fdStdOut=_dup(_fileno(stdout));_dup2(fdStdOutPipe[1],_fileno(s

windows - 如何在 Windows 下将 stdout 和 stderr freopen() 到一个输出文件中

我有一个WindowsWin32/GUI应用程序,它有时会向stdout和stderr打印有趣的输出,所以我想做的是捕获该输出在应用程序退出后进入文件以供审查。问题是,我可以成功调用freopen_s()将stdout输出捕获到一个文件中,或者我可以用它来捕获stderr输出到一个文件中,但尝试同时执行这两个操作只会产生一个包含经过处理的数据的截断文件。下面是一个重现问题的简单程序;如果我注释掉两个freopen_s()调用中的任何一个,那么我会在创建的blah.txt文件中得到预期的输出(即两个文本之一行),但我想要以包含两个文本行的blah.txt结束。在Windows下可以吗?我

python ,C : redirected stdout fires [Errno 9]

我尝试记录用Python和C编写的程序的所有输出。但是,从Python打印会导致IOError:[Errno9]Badfiledescriptor请问有人知道问题出在哪里以及如何解决吗?PS:它在WindowsXP、Python2.6和MinGWGCC上#include#include#include"Python.h"intmain(){intfds[2];_pipe(fds,1024,O_BINARY);_dup2(fds[1],1);setvbuf(stdout,NULL,_IONBF,0);/*alternativeversion:*///HANDLEhReadPipe,hWr

windows - 如何将 STDIN、STDOUT、STDERR 重定向到 Windows 批处理脚本中的文件

我见过许多示例,您可以在这些示例中将单个命令的STDin/out/err重定向到一个文件。所以我能够创建一个myLogger.bat作为包装器,将myScript的调用语句重定向到myLogFile。myLogger示例代码:CALL"%xDir%\%%1">"%lDir%\%lFil%"2>&1我从命令行执行>myLogger.batmyScriptToBeLogged.bat但是我无法重定向Windows批处理文件(.bat)中所有命令的STDin/out/err是否有类似于“exec>$logFile2>&1inshell”的东西可以包含在批处理脚本的开头,它将同一脚本的所有日志

c - 尝试将 str 写入具有特殊文件名 "con"的文件,但它被打印到 stdout

FILE*fp=fopen("./con","w");char*s="hello!";fwrite(s,sizeof(char),strlen(s),fp);fclose(fp);return0;如果我的文件名为“con”,那么fwrite()将像printf()一样工作。它是如何工作的? 最佳答案 Windows/DOS有多个reservedfilenames包括CON、PRN、AUX、CLOCK$、NULCOM1、COM2、COM3、COM4LPT1、LPT2、LPT3、LPT4等。CON是标准控制台(输出),所以这是数据的去向